/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package srac.controleatividades.cgt;

import com.lowagie.text.BadElementException;
import com.lowagie.text.DocumentException;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import srac.controleatividades.cdp.*;
import util.utilitarioExceptions.SracException;
import util.utilitarioPDF.Converte;

/**
 *
 * @author gmiranda
 */
public class AplEmitirRelatorios
{
    


    private AplEmitirRelatorios() {
    }

    private static AplEmitirRelatorios instance = null;
    

    public static AplEmitirRelatorios getInstance() {
        if (instance == null) {
            instance = new AplEmitirRelatorios();
        }
        return instance;
    }
    
    /**
     * Gera o relatorio de Submissões do aluno
     * @param obj
     * @return Verdadeiro se é possível gerar ou Falso senão é possível
     * @throws BadElementException
     * @throws MalformedURLException
     * @throws IOException
     * @throws DocumentException
     * @throws SracException
     * @throws Exception 
     */

    public boolean gerarRelatorios(Aluno obj) throws BadElementException, MalformedURLException, IOException, DocumentException, SracException, Exception {
        List<AtividadeComplementar> listaAtv = AplAtividade.getInstance().obterAtividadesComplementares(obj,StatusAtividadeComplementar.SUBMETIDA);
        if(!listaAtv.isEmpty()){
            SubmissoesToPdf.gerarPdf(listaAtv, obj);
            return true;
        }
        return false;
    }
    
    /**
     * Gera a Tabela de Atividades
     * @throws Exception 
     */

    public void gerarTabelaAtividades() throws Exception {
        List<TipoAtividade> listAtv = AplCadastroInterno.getInstance().obterTipoAtividades();
        List<Categoria> categorias = AplCadastroInterno.getInstance().obterCategorias();
        if(!categorias.isEmpty())
        {
            if(!listAtv.isEmpty())
            {
                TabelaAtividades.gerarPdf(listAtv, categorias);
            }
        }
    }
    
    /**
     * Transforma um array de bytes cadastrados em PDF
     * @param arquivo
     * @param nome
     * @return O arquivo PDF recuperado
     * @throws Exception 
     */
    
    public File recuperarArquivoPDF(byte[] arquivo , String nome) throws Exception
    {
        return Converte.converteByteArrayparaPDF(arquivo, nome);
    }
}
